from PySide6.QtWidgets import QMainWindow, QWidget, QFrame
from PySide6.QtGui import Qt
from filetools import ConfigLoader


class WindowBase(QMainWindow):
    """
    主窗口基类，负责提供主窗口窗口依赖，框架架构，样式设置，枚举类引用
    拥有属性：
        self.init_config()
        self.init_style()
    """
    def __init__(self):
        QMainWindow.__init__(self)
        self.init_config()
        self.init_style()
        self._config()
        self.Qt = Qt
        self.widget = QWidget(self) # 提供widget灵活框架
        self.left_frame = QFrame(self) # 提供左Frame灵活框架
        self.center_frame = QFrame(self) # 提供中Frame灵活框架
        self.right_frame = QFrame(self) # 提供右Frame灵活框架

        self.setCentralWidget(self.widget) # 加载进主窗口中部空间区

    def init_config(self):
        """
        加载ui类别专用配置
        :return: self/配置文件数据
        """
        self.baseconfig = ConfigLoader().Config(target='config.json')['UI']

    def init_style(self):
        """
        加载样式文件数据
        :return: self/样式文件数据
        """
        self.setStyleSheet(ConfigLoader().Style())

    def _config(self):
        # 全局配置
        self.setWindowTitle(self.baseconfig['title'])
        self.resize(self.baseconfig['resize']['width'],
                    self.baseconfig['resize']['height'])